﻿Imports System.Data

Class Acceso

    Private Sub cmdAceptar_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles cmdAceptar.Click
        Mouse.OverrideCursor = Cursors.Wait
        ValidarAcceso()
        Mouse.OverrideCursor = Nothing
    End Sub

    Private Sub cmdCancelar_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles cmdCancelar.Click
        Application.Current.Shutdown()
    End Sub

    Private Sub txtPassword_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles txtPassword.PreviewKeyDown
        If e.Key = Key.Enter Then
            Mouse.OverrideCursor = Cursors.Wait
            ValidarAcceso()
            Mouse.OverrideCursor = Nothing
        End If

    End Sub

    Private Sub ValidarAcceso()
        Dim negocio As New CServiciosGenerales()
        Dim principal As MainWindow
        Dim sMsgError As String = ""

        Dim datoSesion As CServicioLocalSQLServerDB.strucDatosDeSesion  
     
        CServiciosMacrosSyBaseDB.USUARIO = Me.txtUsuario.Text.ToUpper()
        
        Try
            If negocio.ValidarAltaUsuario(Me.txtUsuario.Text.ToUpper()) = True Then
                If negocio.ValidarAccesoParaUsuario(Me.txtUsuario.Text.ToUpper(), Me.txtPassword.Password.ToUpper()) = True Then
                    

                    '+++++++++++++++++(INICIO)Manejo de sesion+++++++++++++++++++++++
                    
                    sMsgError = ""
                     Try
                        datoSesion =  negocio.ValidarExistenciaDeSesion ( Me.txtUsuario.Text.ToUpper())
                    Catch ex As Exception
                        MessageBox.Show("Ocurrió un error al obtener los datos de la sesión", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                        Exit Sub 
                    End Try
                     

                    If datoSesion.id > 0 then 
                           If MessageBox.Show ("Existe una sesión activa con este usuario, ¿desea terminarla?","Acceso",MessageBoxButton.YesNo,MessageBoxImage.Question ) =MessageBoxResult.Yes then 
                               
                               If negocio.AltaSesion (datoSesion.usuario,sMsgError) = False then 
                                    MessageBox.Show("No se pudo dar de alta la nueva sesión: " & sMsgError , "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                                    Exit Sub 
                               End If


                               If negocio.EliminarSesionActiva (datoSesion.id,datoSesion.usuario,sMsgError ) = False then 
                                  MessageBox.Show("No se pudo eliminar la sesión activa: " & sMsgError , "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                                  Exit Sub 
                               End If


                               Try
                                  datoSesion =  negocio.ValidarExistenciaDeSesion ( Me.txtUsuario.Text.ToUpper())
                                Catch ex As Exception
                                  MessageBox.Show("Ocurrió un error al obtener los datos de la sesión, la sesion quedó atrapada.", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                                  Exit Sub 
                          End Try       


                            Else     
                                Exit Sub 
                           End If


                    Elseif datoSesion.id = 0 then 
                          If negocio.AltaSesion (Me.txtUsuario.Text.ToUpper(),sMsgError) = False then 
                                    MessageBox.Show("No se pudo dar de alta la nueva sesión: " & sMsgError , "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                                    Exit Sub 
                          End If

                           Try
                              datoSesion =  negocio.ValidarExistenciaDeSesion ( Me.txtUsuario.Text.ToUpper())
                           Catch ex As Exception
                                MessageBox.Show("Ocurrió un error al obtener los datos de la sesión, la sesion quedó atrapada.", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                                Exit Sub 
                          End Try                                                   

                    End If





                    '+++++++++++++++++(FIN)Manejo de sesion+++++++++++++++++++++++



                    Dim dtDatos As New DataTable()
                    dtDatos = negocio.ObtieneDatosUsuario(Me.txtUsuario.Text)

                    If Not dtDatos Is Nothing Then
                        CServiciosMacrosSyBaseDB.IDUSUARIO = dtDatos(0)(0)                          
                        CServiciosMacrosSyBaseDB.NOMBREUSUARIO = dtDatos(0)(1)
                        CServiciosMacrosSyBaseDB.SESION = datoSesion.id  
                        CServiciosMacrosSyBaseDB.USUARIORED = Environment.UserName 
                        principal = New MainWindow()
                        principal.Show()
                        Me.Close()
                    Else
                        MessageBox.Show("Ocurrió un error al obtener los datos del usuario", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                                
                    End If
                Else
                    MessageBox.Show("El usuario o contraseña es o son incorrectos", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)
                                        
                End If
            Else
                MessageBox.Show("El usuario no ha sido registrado o esta inactivo", "Acceso", MessageBoxButton.OK, MessageBoxImage.Exclamation)                                
            End If
        Catch ex As Exception
            MessageBox.Show("Error al intentar accesar al aplicativo: " & ex.Message, "Acceso", MessageBoxButton.OK, MessageBoxImage.Error)                        
        End Try

        

    End Sub



    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim negocioIni  = new CServiciosGenerales 
        Dim usuarioDec As String = ""
        Dim sMsgError  As String = ""



        usuarioDec =  negocioIni.ObtenerUsuarioDecalog(Environment.UserName,sMsgError)  

        If Not sMsgError.Equals ("") then 
          MessageBox.Show("El usuario con el que se intenta acceder a FRIDA es incorrecto, no coinciden sus credenciales.", "Acceso", MessageBoxButton.OK, MessageBoxImage.Error )                                                         
        End If


        Me.txtUsuario.Text = usuarioDec
        Me.txtUsuario.IsEnabled = False 
        Me.txtPassword.Focus  
    End Sub


End Class
